<html>
<head><meta charset="utf-8"><title>pre-design meeting 2019-12-05 · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html">pre-design meeting 2019-12-05</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="182675571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182675571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182675571">(Dec 05 2019 at 16:20)</a>:</h4>
<p>Hey <span class="user-mention" data-user-id="116466">@Zoxc</span> --</p>
<p>So <span class="user-mention" data-user-id="124287">@mw</span> and I were talking about the meeting tomorrow  (on end-to-end queries) and trying to plan what we ought to be talking about. We were thinking that probably the first question we should be asking is:</p>
<blockquote>
<p>Do we expect to land these PRs in rebased form at some point in the near future (or ever)?</p>
</blockquote>



<a name="182675592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182675592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182675592">(Dec 05 2019 at 16:21)</a>:</h4>
<p>I'm sorry to say it, but right now, mw and I were leaning towards "no". This is a combination of a few things:</p>
<ul>
<li>We have a lot of things in flight right now (rust-analyzer, parallelization, maybe refactoring the dep-graph)</li>
<li>The rust-analyzer effort in particular has a lot of overlap, since it is "end-to-end" from the get go; we want to be careful with modifying rustc in ways that might make the two efforts harder to reconcile</li>
<li>The "end design" that these PRs are working towards is not very clear, and seems to be rather complicated</li>
</ul>
<p>The last point seems particularly important.</p>



<a name="182675599"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182675599" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182675599">(Dec 05 2019 at 16:21)</a>:</h4>
<p>So we figured we'd start the meeting on that question, probably. We were then thinking, presuming the answer does wind up being "no", what else we might discuss. Two thoughts:</p>
<ul>
<li>First, it would still be good to move the "incremental barrier" further back. We could talk about immediate steps, such as improving how the HIR map is integrated with queries and incrementalizing HIR lowering. (But we should also consider if we have the bandwidth to really pursue that.)</li>
<li>Second, we might talk about the larger architecture -- what lessons can we learn from these PRs? Where was the query system a poor fit, requiring workarounds or changes? I have some examples that came up around MIR transformations and chalk, and maybe <span class="user-mention" data-user-id="133169">@matklad</span> has some thoughts on things from rust-analyzer</li>
</ul>
<p>OK, that's it. I wanted to give you a heads up and get your reaction, and/or any thoughts on good things to discuss specifically tomorrow.</p>



<a name="182675623"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182675623" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182675623">(Dec 05 2019 at 16:21)</a>:</h4>
<p>(also cc <span class="user-mention" data-user-id="116083">@pnkfelix</span> <span aria-label="point up" class="emoji emoji-1f446" role="img" title="point up">:point_up:</span> )</p>



<a name="182677664"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182677664" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182677664">(Dec 05 2019 at 16:40)</a>:</h4>
<p>These PRs basically does the minimal thing required to move the "incremental barrier" further back without regressing performance. They constrain the "end design" to use a single query / incremental system without much constraints on how that query system is used. An approach in another direction from these PRs would be to use multiple query systems where the later system have some invariant (no parsing errors for example) that has to hold.</p>
<p>Does <code>rust-analyzer</code> use Salsa end-to-end? If so and assuming Salsa is pretty much equivalent to the query system in rustc, that should be very compatible with these PRs.</p>



<a name="182677791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182677791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182677791">(Dec 05 2019 at 16:41)</a>:</h4>
<p>I'll also suggest <a href="https://internals.rust-lang.org/t/migrating-rustc-interface-queries-to-proper-librustc-queries/10433" target="_blank" title="https://internals.rust-lang.org/t/migrating-rustc-interface-queries-to-proper-librustc-queries/10433">https://internals.rust-lang.org/t/migrating-rustc-interface-queries-to-proper-librustc-queries/10433</a> as reading material ;)</p>



<a name="182678845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182678845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182678845">(Dec 05 2019 at 16:51)</a>:</h4>
<p>The summary section highlights the problematic parts of the PRs.</p>



<a name="182679413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182679413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182679413">(Dec 05 2019 at 16:56)</a>:</h4>
<p>The first PR which moves the "incremental barrier" back to (but not including) HIR lowering doesn't suffer from the problematic parts though. Landing that would allow us to replace the HIR map structure with its (probably broken in some way) custom incremental dependency tracking with proper queries. I do expect that moving to queries will come with a performance cost though.</p>



<a name="182765653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182765653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182765653">(Dec 06 2019 at 14:34)</a>:</h4>
<p>I certainly read the internals thread :)</p>



<a name="182765666"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182765666" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182765666">(Dec 06 2019 at 14:34)</a>:</h4>
<p>Anyway, it seems like it would be a good use of time then to cover the "big picture"</p>



<a name="182766277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182766277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182766277">(Dec 06 2019 at 14:40)</a>:</h4>
<p>I was just discussing with <span class="user-mention" data-user-id="116083">@pnkfelix</span> a bit</p>



<a name="182766321"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182766321" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182766321">(Dec 06 2019 at 14:41)</a>:</h4>
<p>Despite how the message above might read, I want to emphasize that I don't want the meeting to have a foregone conclusion, but I did want to warn you where I personally lean beforehand</p>



<a name="182766355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182766355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182766355">(Dec 06 2019 at 14:41)</a>:</h4>
<blockquote>
<p>These PRs basically does the minimal thing required to move the "incremental barrier" further back without regressing performance. </p>
</blockquote>
<p>I guess we should discuss this part -- I think the most fruitful thing would be to talk about what high-level strategy we take</p>



<a name="182766456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/pre-design%20meeting%202019-12-05/near/182766456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/pre-design.20meeting.202019-12-05.html#182766456">(Dec 06 2019 at 14:42)</a>:</h4>
<p>I'm trying to think how to frame the agenda, in other words</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>